[Auth0] Route 53+ACM+CloudFrontでAuth0にカスタムドメインとリバースプロキシを設定してみた

[Auth0] Route 53+ACM+CloudFrontでAuth0にカスタムドメインとリバースプロキシを設定してみた

Clock Icon2024.10.29

こんにちは。

ゲームソリューション部の西川です。
Amazon Route 53(以下、Route 53)+AWS Certificate Manager(以下、ACM)+CloudFrontを利用してAuth0にリバースプロキシを設定してみました。
Auth0ではカスタムドメインを利用できますが、自己管理している証明書を利用したい場合は、リバースプロキシを設定する必要があります。
また、Auth0に対してリバースプロキシを設定するメリットとしては、自己管理している証明書を利用できるだけでなく、キャッシュによる流量の調整や、ログイン前の任意の処理の導入などが挙げられます。
今回は、Route 53でドメインの取得後、ACMで証明書の発行、CloudFrontでAuth0にリバースプロキシの設定を行なっていきます。

ドメイン取得からCloudFrontディストリビューションの作成までについては、下記DevelopersIOの記事を参考にさせていただきました。
https://dev.classmethod.jp/articles/cloudfront-custom-domain-name/

Route 53でドメインの取得

まずは、ドメインの取得を行います。
Route 53のダッシュボードから「開始」を押下します。
FireShot Capture 015 - Route 53 - ホーム - us-east-1.console.aws.amazon.com

「ドメインを登録」を選択し、「開始する」を押下します。
FireShot Capture 016 - Route 53 - 使用を開始する - us-east-1.console.aws.amazon.com

ドメインを入力後、任意のトップドメインを選択し、「チェックアウトに進む」を押下します。
今回はRoute 53で使用できるトップドメインの中で一番料金の安い「.click」を選択しました。
FireShot Capture 018 - Route 53 ドメイン - ドメインの登録 - us-east-1.console.aws.amazon.com

契約の期間などを入力します。
今回は検証用なので、1年とし、自動更新もオフにしております。
FireShot Capture 019 - Route 53 ドメイン - ドメインの登録 - us-east-1.console.aws.amazon.com

連絡先を入力して、「次へ」を押下します。
入力したメールアドレスに、検証の前に確認のメールが届くので使用できるメールアドレスを入力できるように注意。
FireShot Capture 020 - Route 53 ドメイン - ドメインの登録 - us-east-1.console.aws.amazon.com

確認して問題なければ「送信」を押下します。
FireShot Capture 022 - Route 53 ドメイン - ドメインの登録 - us-east-1.console.aws.amazon.com

確認メールを受信したことを確認後、URLを押下します。
スクリーンショット 2024-10-21 14.38.06

成功の旨のメッセージが表示されます。
FireShot Capture 026 - Verify WHOIS registrant email address - www.verify-whois.com

数分待機すると、コンソール画面からドメインのリクエスト欄が成功に変化しています。
FireShot Capture 028 - Route 53 ドメイン - リクエスト - us-east-1.console.aws.amazon.com

ホストゾーンの設定も自動でされます。
FireShot Capture 023 - Route 53 コンソールホストゾーン - us-east-1.console.aws.amazon.com
FireShot Capture 024 - nishikawa-kosuke.click - 詳細 - us-east-1.console.aws.amazon.com

以上でドメインの取得が完了しました。

ACMで証明書の発行

続いて、ACMで証明書の発行を行います。
ACMの画面より「開始する」を押下します。
FireShot Capture 029 - Certificate Manager - us-east-1 - us-east-1.console.aws.amazon.com

ドメイン名などを入力して「リクエスト」を押下します。
FireShot Capture 030 - パブリック証明書をリクエスト - Certificate Manager - us-east-1_ - us-east-1.console.aws.amazon.com

証明書が保留中になっていることが確認できます。
FireShot Capture 031 - 証明書 - Certificate Manager - us-east-1 - us-east-1.console.aws.amazon.com

証明書の詳細に移動し、「Route 53でレコードの作成」を押下します。
FireShot Capture 032 - 証明書の詳細 - cbbfb974-c567-474a-a653-faee0c131cb3 - Certificate Manager -_ - us-east-1.console.aws.amazon.com

そのまま「レコードの作成」を押下します。
FireShot Capture 033 - DNS レコードの作成 - cbbfb974-c567-474a-a653-faee0c131cb3 - Certificate Mana_ - us-east-1.console.aws.amazon.com

レコードの作成が完了しました。
FireShot Capture 034 - 証明書の詳細 - cbbfb974-c567-474a-a653-faee0c131cb3 - Certificate Manager -_ - us-east-1.console.aws.amazon.com

証明書が「発行済み」となっていました。
FireShot Capture 035 - 証明書 - Certificate Manager - us-east-1 - us-east-1.console.aws.amazon.com

以上で証明書の発行が完了しました。

続いて、Auth0の設定および、CloudFrontの設定を行います。
下記公式ドキュメントを参考にしております。
https://auth0.com/docs/customize/custom-domains/self-managed-certificates
https://auth0.com/docs/customize/custom-domains/self-managed-certificates/configure-aws-cloudfront-for-use-as-reverse-proxy

Auth0とCloudFrontの作成

Custom Dmainの設定画面で、上記で作成したドメインを利用して入力します。
また、今回はセルフマネージドの証明書を利用するので、Certificate TypeSelf-managed certificateを選択します。
セルフマネージドの証明書の設定を行うにはエンタープライズプランへの加入が必要なため注意してください。
スクリーンショット 2024-10-29 17.15.32

認証を行う画面に遷移するので、TXT RecordTXT Contentをコピーしておきます。
スクリーンショット 2024-10-29 17.15.48

Route 53に戻り、レコード名にTXT Recordの内容を入力します。
レコードタイプはTXTを選択します。
値にTXT Contentの内容を入力します。
スクリーンショット 2024-10-29 17.19.56

Auth0の画面に戻りVerifyを押下すると、以下のようにOrigin Domain NameやHeaderの値としてNameValueが表示されるので、コピーしておきます。
スクリーンショット 2024-10-29 17.22.23

続いて、CloudFrontの画面に行き、ディストリビューションを作成していきます。
Origin domainに上記で取得したOrigin Domain Nameの値を入れます。
プロトコルはHTTPSを選択します。
スクリーンショット 2024-10-29 17.23.31

カスタムヘッダーにも上記で取得したNameValueを入力します。
スクリーンショット 2024-10-29 17.23.38

代替ドメイン名に、カスタムドメインに設定した値を入力します。
SSL証明書には先ほどACMで作成した証明書を選択します。
スクリーンショット 2024-10-29 17.25.04

ビューワープロトコルポリシーはRedirect HTTP to HTTPSを選択します。
許可されたHTTPメソッドはGET, HEAD, OPTIONS, PUT, POST, PATCH, DELETEを選択します。
スクリーンショット 2024-10-29 17.27.22

キャッシュキーとオリジンリクエストでは、Legacy cache settingsを選択します。
設定はそれぞれ以下のように設定してください。
スクリーンショット 2024-10-29 17.54.57

設定をした後、作成を押下するとディストリビューションが作成されました。
スクリーンショット 2024-10-29 18.38.37

続いて、Route 53に戻り、CNAMEレコードを作成します。
レコード名はカスタムドメインの値を入力します。
レコードタイプはCNAMEを選択します。
値はディストリビューションのドメイン名を入力します。
スクリーンショット 2024-10-29 17.30.41

動作確認

チュートリアルにて作成したアプリケーションの設定値を変更してログイン画面を開きます。
スクリーンショット 2024-10-29 18.07.54

問題なく開けることが確認できました。
スクリーンショット 2024-10-29 17.53.11

nslookupを使用してCNAMEがcloudfront経由になっていることも確認できました。
スクリーンショット 2024-10-29 18.22.55

さいごに

以上でカスタムドメインとリバースプロキシの設定ができました。
CloudFrontをリバースプロキシとして導入することにより、Auth0のAPIを実行する際にキャッシュの設定や任意の処理を挟み込むなど、いろいろなカスタマイズを行うことができるかと思います。

以上、Auth0を利用している方、利用の検討をしている方のご参考になっていれば幸いです。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.